package com.cssw.fyzb.busi.service.acct;



import com.cssw.fyzb.core.model.dodb.*;
import com.cssw.fyzb.core.model.vo.user.BankDistrictTreeVo;

import java.util.List;

/**
 * @Author: yangyiqun
 * @Date: 2020/7/11 15:44
 */
public interface OutAcctService {

    /**
     * 获取微信支付信息
     * @param userId
     * @return
     */
    UserWechat getWechatById(Long userId);

    /**
     * 获取阿里支付信息
     * @param userId
     * @return
     */
    UserAli getAliById(Long userId);

    /**
     * 获取银行卡支付信息
     * @param userId
     * @return
     */
    UserBank getBankByUserId(Long userId);

    /**
     * 查询银行编码列表
     * @return
     */
    List<BankCode> listBankCode();


    /**
     * 查询银行编码列表
     * @return
     */
    List<BankCodeCh> listBankCodeCh();

    /**
     * 查询银行卡列表
     * @param userId
     * @return
     */
    List<UserBank> listBankById(Long userId);

    /**
     * 删除微信支付配置
     * @param userId
     */
    void deleteWechat(Long userId);

    /**
     * 删除阿里支付配置
     * @param userId
     */
    void deleteAli(Long userId);

    /**
     * 删除银行卡
     * @param bankId
     */
    void deleteBank(Long userId, Long bankId);

    /**
     * 保存阿里支付信息
     * @param userId
     * @param name
     * @param aliNo
     * @param receQrCode
     */
    void saveAli(Long userId, String name, String aliNo, String receQrCode);

    /**
     * 保存微信支付信息
     * @param userId
     * @param name
     * @param wechatNo
     * @param receQrCode
     */
    void saveWechat(Long userId, String name, String wechatNo, String receQrCode);

    /**
     * 保存银行卡信息
     * @param bankId
     * @param userId
     * @param bankName
     * @param cardNo
     * @param openBank
     * @param name
     * @param defaultFlag
     */
    void saveBank(Long bankId, Long userId, String bankName, String cardNo, String openBank, String name, int defaultFlag,String province,String city,String bankCode);

    /**
     * 更新支付宝支付信息
     * @param userId
     * @param name
     * @param aliNo
     * @param receQrCode
     */
    void updateAli(Long userId, String name, String aliNo, String receQrCode);

    /**
     * 更新微信支付信息
     * @param userId
     * @param name
     * @param wechatNo
     * @param receQrCode
     */
    void updateWechat(Long userId, String name, String wechatNo, String receQrCode);

    /**
     * 更新银行卡信息
     * @param bankId
     * @param userId
     * @param bankName
     * @param cardNo
     * @param openBank
     * @param name
     * @param defaultFlag
     */
    void updateBank(Long bankId, Long userId, String bankName, String cardNo, String openBank, String name, int defaultFlag,String province,String city,String bankCode);

    void updateDefaultFlag(Long bankId);

    List<BankDistrictTreeVo> getBankDistrictTree();
}
